It turns out that we never destroyed modal dialogs when closing
them, causing them to still linger in the scene graph even when
there were no references to them in the JS. The one case where
we don't want to destroy modal dialogs after being closed is
endSessionDialog, so provide a parameter that allows classes
to override this behavior.
https://bugzilla.gnome.org/show_bug.cgi?id=697295
Extends: ModalDialog.ModalDialog,
_init: function() {
- this.parent({ styleClass: 'end-session-dialog' });
+ this.parent({ styleClass: 'end-session-dialog',
+ destroyOnClose: false });
this._user = AccountsService.UserManager.get_default().get_user(GLib.get_user_name());
styleClass: null,
parentActor: Main.uiGroup,
keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL,
- shouldFadeIn: true });
+ shouldFadeIn: true,
+ destroyOnClose: true });
this.state = State.CLOSED;
this._hasModal = false;
this._keybindingMode = params.keybindingMode;
this._shellReactive = params.shellReactive;
this._shouldFadeIn = params.shouldFadeIn;
+ this._destroyOnClose = params.destroyOnClose;
this._group = new St.Widget({ visible: false,
x: 0,
this.state = State.CLOSED;
this._group.hide();
this.emit('closed');
+
+ if (this._destroyOnClose)
+ this.destroy();
})
});
},